package org.umlviewer.xmiparser;

import java.util.ArrayList;
import java.util.List;
import org.umlviewer.model.Constants;
import org.umlviewer.model.DiagramElement;
import org.umlviewer.model.UmlDiagram;
import org.umlviewer.model.diagram_class.Clase;
import org.jdom2.Element;

/**
 *
 * @author Rafa
 */
public class Xmi11Parser extends XmiParser{

    //diagrama que se devuelve, se hace de clase por el metodo recursivo
    private UmlDiagram retorno;
    //las relaciones se procesan despues de crear los elementos    
    private ArrayList<RelationshipParser> relaciones;    
    private String attname, reltype, auxStr;
    private Element auxElement;
    
    public Xmi11Parser()
    {
        super();
        retorno = new UmlDiagram();              
    }
    
    public UmlDiagram getUmlDiagram(Element xmiRoot) {
        parseXmi(xmiRoot, "", null);
        return retorno;
    }


    private void parseXmi(Element xmiRoot, String idref, DiagramElement parent)
    {
        List<Element> hijos;
        hijos = xmiRoot.getChildren();        
        String aux;
        String elementid;
        idref = xmiRoot.getAttributeValue("xmi.id");
        for(Element e: hijos)
        {
            aux = e.getName();
            elementid = e.getAttributeValue("xmi.id");
            
            if(aux.equals("Class"))
            {
                Clase c = new Clase(e.getAttributeValue("name"));
                c.setId(elementid);
                retorno.addElement(c);
            }
            //System.out.println("Etiqu: "+e.getName());
            parseXmi(e, idref, parent);
        }
    }
    
}
